﻿/*************************************************************************************

- CLR版本：        4.0.30319.42000
- 类 名 称：       LogHelper
- 机器名称：       YTE
- 命名空间：       LD.Common
- 文 件 名：       LogHelper
- 创建时间：       2022/6/14 16:30:03
- 作    者：       YTE
- 说   明：
- 修改时间：
- 修 改 人：
  *************************************************************************************/

using LD.BC;
using System.Collections.Concurrent;
using System.Linq;

namespace LD.Host
{
    public class BCAlertHelper
    {
        public static event BCAlertDelegate AlertEvent;
        public static object m_obj = new object();
        private static ConcurrentDictionary<string, string> list = new ConcurrentDictionary<string, string>();
        public static void Log(string msg, LogLevel level = LogLevel.严重)
        {
            //报警必须复位
            Cache.SetCache(CONST.BC_ISRESET, false);
            Cache.SetCache(CONST.BC_ISRESETING, false);

            if (!list.ContainsKey(msg))
            {
                list.TryAdd(msg, "");
                AlertEvent?.Invoke(msg, level);

                //所有轴停止
                BcFactory.Instance.Control.StopALL();

                //灯全部关闭
                BcFactory.Instance.StartStop.ClosedLight();

                //蜂鸣
                SoundHelper.Instance.Signal(LevelType.低电平);

                //红灯
                BcFactory.Instance.StartStop.Light(LightEnum.红灯, LevelType.低电平);

                //报警
                if (Appbus.StateEnum == StateEnum.自动模式)
                {
                    //通知全局
                    Appbus.StateEnum = StateEnum.手动模式;
                }
                //执行报警流程
                Log4.Info("执行报警流程");
                AppLoader.LoadFlow(FlowType.报警);
            }
        }
        public static void Clear()
        {
            list.Clear();
        }
        public static bool GetErrorQty
        {
            get
            {
                if (list.Count > 0)
                    return true;
                else
                    return false;
            }
        }
    }
}
